﻿/// <reference path="libraries/jQuery.js" />
/// <reference path="Alert.js" />

$(function () {
    //    $('#myTab membros').tab('show');
    //    $('#myTab a').click(function (e) {
    //        e.preventDefault();
    //        $(this).tab('show');
    //    })
    $('#tabMenu a').click(function (e) {
        e.preventDefault();
        $(this).tab('show');
    })
    $("input[id$='btnAddUsuario']").click(function (e) {
        var g = new Grupo();
        g.GrupoId = $("input[id$='GrupoId']").val();
        var _alert = new Alert();
        _alert.Name = "erroGeral";
        _alert.Type = AlertType.Error;
        if (!g.GrupoId || $("input[id$='GrupoId']").val().length == 0) {
            _alert.AddMessage("Grupo inválido");
        }
        if ($("input[id$='LoginId']").val().length == 0 || isNaN(parseInt($("input[id$='LoginId']").val(), 10))) {
            _alert.AddMessage("Login de usuário inválido");
        }
        if (_alert.HasMessage()) {
            _alert.Show();
            return;
        }
        g.AddUser($("input[id$='LoginId']").val());
        return;
    });
    $("input[id$='btnRemoveItem']").click(function (e) {

    });
})

function AddPermissao(itemId) {
    if($("input[id$='btnAddItem" + itemId + "Id']").hasClass("active"))
        return false;
    var grupo = new Grupo();
    grupo.GrupoId = $("input[id$='GrupoId']").val();
    
    grupo.AddPermissao(itemId);
}

function RemovePermissao(itemId) {
    if ($("input[id$='btnRemoveItem" + itemId + "Id']").hasClass("active"))
        return false;
    var grupo = new Grupo();
    grupo.GrupoId = $("input[id$='GrupoId']").val();
    grupo.RemovePermissao(itemId);
}

function Grupo() {
    var __grupo = this;
    this.GrupoId = "0";
    this.Url = eS.UrlPadrao + 'Views/Administrativo/Grupo.aspx/';
    __grupo.GetObject = function (loginId) {
        var item = '{ loginId: ' + loginId.toString() + ', grupoId: ' + this.GrupoId.toString() + ' }';
        return item;
    }
    this.AddUser = function (loginId) {
        ExecuteMethod(this.Url + "AddUsuario", __grupo.GetObject(loginId), function (e) {
            if (e.d) {
                var type = e.d.AlertType;
                if (e.d.AlertType == AlertType.Success) {
                    var tr = "<tr loginId='" + e.d.Value.LoginId.toString() + "'><td>" + e.d.Value.LoginText + "</td><td>" + e.d.Value.Usuario.Nome + "</td><td><button type='button' class='btn btn-danger' onclick='Remove(" + __grupo.GrupoId.toString() + ", " + e.d.Value.LoginId.toString() + ")'>Remover</button></td></tr>";
                    $('table[id$="gridGrupo"] tr:last').after(tr);
                    $("input[id$='Login']").val("");
                    $("input[id$='LoginId'").val("");
                    $("input[id$='LoginText']").val("");
                }
                if (e.d.Show == true && e.d.Messages) {
                    var _alert = new Alert();
                    _alert.Name = "erroGeral";
                    _alert.Type = type;
                    for (var i in e.d.Messages) {
                        _alert.AddMessage(e.d.Messages[i]);
                    }
                    _alert.Show();
                }
            }
        });
    }
    this.AddPermissao = function (itemId) {
        ExecuteMethod(__grupo.Url + "AddPermissao", JSON.stringify({ grupoId: this.GrupoId, itemId: itemId }), function (e) {
            if (e.d) {
                if (e.d.AlertType != AlertType.Success) {
                    $("input[id$='btnAddItem" + itemId + "Id']").removeClass("active");
                    $("input[id$='btnRemoveItem" + itemId + "Id']").addClass("active");
                } else {
                    $("input[id$='btnAddItem" + itemId + "Id']").addClass("btn-primary");
                    $("input[id$='btnRemoveItem" + itemId + "Id']").removeClass("btn-danger");
                    return;
                }
                if (e.d.Show == true && e.d.Messages) {
                    var _alert = new Alert();
                    _alert.Name = "erroGeral";
                    _alert.Type = e.d.AlertType;
                    for (var i in e.d.Messages) {
                        _alert.AddMessage(e.d.Messages[i]);
                    }
                    _alert.Show();
                }
            }
        });

    };
    this.RemovePermissao = function (itemId) {
        ExecuteMethod(__grupo.Url + "RemovePermissao", JSON.stringify({ grupoId: this.GrupoId, itemId: itemId }), function (e) {
            if (e.d) {
                if (e.d.AlertType != AlertType.Success) {
                    $("input[id$='btnRemoveItem" + itemId + "Id']").removeClass("active");
                    $("input[id$='btnAddItem" + itemId + "Id']").addClass("active");
                } else {
                    $("input[id$='btnRemoveItem" + itemId + "Id']").addClass("btn-danger");
                    $("input[id$='btnAddItem" + itemId + "Id']").removeClass("btn-primary");
                    return;
                }
                if (e.d.Show == true && e.d.Messages) {
                    var _alert = new Alert();
                    _alert.Name = "erroGeral";
                    _alert.Type = e.d.AlertType;
                    for (var i in e.d.Messages) {
                        _alert.AddMessage(e.d.Messages[i]);
                    }
                    _alert.Show();
                }
            }
        });

    };
    this.RemoveUser = function (loginId) {
        ExecuteMethod(__grupo.Url + "RemoverUsuario", __grupo.GetObject(loginId), function (e) {
            if (e.d) {
                if (e.d.AlertType == AlertType.Success) {
                    $("tr[loginId='" + e.d.Value.LoginId.toString() + "']").remove();
                }
                if (e.d.Show == true && e.d.Messages) {
                    var _alert = new Alert();
                    _alert.Name = "erroGeral";
                    _alert.Type = e.d.AlertType;
                    for (var i in e.d.Messages) {
                        _alert.AddMessage(e.d.Messages[i]);
                    }
                    _alert.Show();
                }
            }
        });
    }
    return this;
}

function Remove(grupoId, loginId) {
    var grupo = new Grupo();
    grupo.GrupoId = grupoId;
    grupo.RemoveUser(loginId);
}

function ExecuteMethod(url, parans, callback) {
    //$('div[id="membros"]').block({ message: 'aguarde <img src="' + eS.UrlPadrao + '/recursos/i/loading.gif" />' });
    $.ajax({
        url: url,
        type: 'post',
        data: parans,
        dataType: 'json',
        contentType: 'application/json; charset=utf-8',
        success: callback,
        error: function (e) {
            var _alert = new Alert();
            _alert.Name = "erroGeral";
            _alert.Type = AlertType.Error;
            _alert.AddMessage(e.d ? e.d : e.responseText);
            _alert.Show();
        },
        complete: function (e) {
            //$('div[id="membros"]').unblock();
        }
    });
}